As microprocessors and computer systems advance, greater amounts of software can be executed on a single platform. To accommodate different software that may be written for different platforms and operating systems (OSs), virtualization technologies have been developed. Virtualization enables multiple OSs and applications to share the resources of and execute concurrently on a single hardware platform. Today, virtualization is finding its way into diverse types of computing environments, from small factor servers to large-scale data centers that simultaneously provide computing services to multiple customers.
Virtualization generally is implemented using a software entity referred to as a Virtual Machine Monitor (VMM). The VMM presents to each OS a virtual machine (VM) having virtual resources, including one or more virtual processors, virtual memory and virtual input/output (I/O) resources, that the OS may completely and directly control. The VMM maintains the system environment for implementing virtualization policies, such as sharing and/or allocating physical resources among the VMs. Each OS and other software that runs on a VM is referred to as a guest or guest software, while a host or host software is software, such as the VMM, that runs outside of the virtualization environment. Thus, virtualization technologies allow multiple guest software to simultaneously run on a single host or physical platform. A guest executing on a system may see a virtual central processing unit (VCPU) which appears to the guest as a physical CPU having the same, or a subset of the same, features as the actual physical CPU (PCPU).
Because virtualization technologies can consolidate many diverse workloads into a single physical machine, virtualization makes efficient use of physical resources and, thus, in some respects, may be viewed as a type of environmentally friendly (or “green”) technology. This has provided momentum to embrace virtualization technologies, particularly since energy consumption is of increasing concern. However, simply consolidating OSs on a single platform may still not be enough to satisfy demands for efficiency. Towards that end, virtualization technologies are increasingly being required to further exploit fine-grained power management (or power-saving) capabilities of the type that were first introduced on client devices and now are popular even on high end servers. However, virtualization of the CPUs and the continuous sharing and re-allocating of physical resources adds a layer of complexity, making it difficult to translate traditional power management techniques implemented by an OS on a physical machine to a virtual environment.